/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

/**
 *
 * @author Utilizador
 */
@Entity
@Table(name = "FARMACIA")
@NamedQuery(name = "findAllFarmacias", query = "SELECT f FROM Farmacia f")

public class Farmacia implements Serializable {
    
    @Id
    private int id;

    private String nome;
    private String localizacao;
   

    @OneToOne
    private Armazem armazem;
  
    @ManyToMany

    private List<Fornecedor> listaFornecedores;
    
    @OneToMany(mappedBy = "farmacia")
  
    private List<FuncionarioBalcao> listaFuncionariosBalcao;
    
    @OneToMany(mappedBy = "farmacia")
    private List<Venda> listaVendas;
    
    @OneToMany(mappedBy = "farmacia")
    private List<Encomenda> listaEncomendas;
    
    @OneToMany(mappedBy = "farmacia")

    private List<Administrador> listaAdministradores;

    public Farmacia(int id, String nome, String localizacao, Armazem armazem) {
        this.id = id;
        this.nome = nome;
        this.localizacao = localizacao;
        this.armazem = armazem;
        this.listaFornecedores = new ArrayList<>();
        this.listaFuncionariosBalcao = new ArrayList<>();
        this.listaEncomendas = new ArrayList<>();
        this.listaVendas = new ArrayList<>();
        this.listaAdministradores = new ArrayList<>();
    }

    public Farmacia(){
        
    }

    public Farmacia(int id, String nome, String localizacao) {
        this.id = id;
        this.nome = nome;
        this.localizacao = localizacao;
        this.listaFornecedores = new ArrayList<>();
        this.listaFuncionariosBalcao = new ArrayList<>();
        this.listaVendas = new ArrayList<>();
        this.listaEncomendas = new ArrayList<>();
        this.listaAdministradores = new ArrayList<>();
    }
    
    
    


    public Armazem getArmazem() {
        return armazem;
    }

    public String getLocalizacao() {
        return localizacao;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public List<Fornecedor> getListaFornecedores() {
        return listaFornecedores;
    }

    public void setListaFornecedores(List<Fornecedor> listaFornecedores) {
        this.listaFornecedores = listaFornecedores;
    }

    public List<FuncionarioBalcao> getListaFuncionariosBalcao() {
        return listaFuncionariosBalcao;
    }

    public void setListaFuncionariosBalcao(List<FuncionarioBalcao> listaFuncionariosBalcao) {
        this.listaFuncionariosBalcao = listaFuncionariosBalcao;
    }

    public List<Venda> getListaVendas() {
        return listaVendas;
    }

    public void setListaVendas(List<Venda> listaVendas) {
        this.listaVendas = listaVendas;
    }

    public List<Encomenda> getListaEncomendas() {
        return listaEncomendas;
    }

    public void setListaEncomendas(List<Encomenda> listaEncomendas) {
        this.listaEncomendas = listaEncomendas;
    }

    public void setLocalizacao(String localizacao) {
        this.localizacao = localizacao;
    }

    public void setArmazem(Armazem armazem) {
        this.armazem = armazem;
    }

    public List<Administrador> getListaAdministradores() {
        return listaAdministradores;
    }

    public void setListaAdministradores(List<Administrador> listaAdministradores) {
        this.listaAdministradores = listaAdministradores;
    }
    
    public void addEncomenda(Encomenda e){
        this.listaEncomendas.add(e);
    }
    
    public void addVenda(Venda v){
        this.listaVendas.add(v);
    }
    
}